#include<iostream>
#include<stack>
using namespace std;
stack<int> S[4];
void move(int x,int y){
	int temp = S[x].top();
	S[x].pop();
	S[y].push(temp);
	cout << x << "-->" << y << endl;
} 
void hanoi(int a,int b,int c,int n){
	if(n==1){
		move(a,c);
		return ;
	}
	hanoi(a,c,b,n-1);
	move(a,c);
	hanoi(b,a,c,n-1);
}
int main(){
	
	int n;
	cin >> n;
	for(int i=n;i>=1;i--){
		S[1].push(i);
	}
	hanoi(1,2,3,n);
	while(!S[3].empty()){
		cout << S[3].top() << " ";
		S[3].pop();
	}
	return 0;
} 
